home *** CD-ROM | disk | FTP | other *** search
- * PROGRAM...........MAKEMRG.PRG Version 1.0 (Initial Release)
- * NOTES.............WILL CREATE A WordPerfect 5.1 MERGE FILE FROM ANY DATABASE
- * BY SELECTING FIELDS FROM A LIST AND THEN SETTING UP A CRUDE
- * FILTER AND THEN SETTING AN INDEX. MAXIMUM NUMBER OF FIELDS
- * THAT CAN BE DISPLAYED IS 64.
- * AUTHOR............MICHAEL A. HUBER
- * DATE..............03/02/93
-
-
- ON ERROR DO Bad
- SET TALK OFF
- SET SAFETY OFF
- CLEAR ALL
- CLEAR
- DEFINE WINDOW m_ERROR FROM 10,15 TO 14,65
- @ 1,0
- ?? REPLICATE(CHR(205),79)
- TEXT
- Program: MAKEMRG.PRG Version 1.0 (Initial Release)
-
- Author: Michael A. Huber
- P.O. Box 501511
- Indianapolis, IN 46250-6511
-
- Notes: Creates a WordPerfect 5.1 merge file (MERGE.DAT) using
- up to 64 fields from a dBASE IV database. Also allows
- filtering of records, creating an index, convert the
- character fields to proper case and defining where
- the output merge file will be located.
-
- Requirements: WordPerfect 5.1 (Convert.Exe) - Trademark of WordPerfect Corp.
- dBASE IV - Trademark of Borland
-
- You may use this program and copy it freely among your friends or business
- associates. All I ask is that you do not remove this title screen from any
- copy you make and if you find the program useful send a donation of $10.00
- to me at the above address. A User Defined Function called PROPER() is
- located at the end of this program and is very useful even by itself.
- ENDTEXT
- ? REPLICATE(CHR(205),79)
- @ 24,37 SAY "........"
- @ 24,57 SAY "(ENTER) To Quit"
- @ 23,0
- ACCEPT 'Database Filename Without Extension: ' TO m_FILE
- USE &m_FILE
- IF FILE(m_FILE+".DBF")=.T.
- STORE 1 TO m_FIELD
- STORE 0 TO m_COLUMN
- STORE 2 TO m_ROW
- CLEAR
- @ 0,0 SAY "Structure For: "+UPPER(m_FILE)+".DBF"
- @ 1,0
- ?? REPLICATE(CHR(205),79)
- DO WHILE m_FIELD <= FLDCOUNT().AND.m_FIELD<=64
- @ m_ROW,m_COLUMN SAY STR(m_FIELD,2)+"--> "+TRIM(FIELD(m_FIELD))
- m_ROW=m_ROW+1
- IF m_ROW=18
- STORE M_COLUMN+20 TO m_COLUMN
- m_ROW=2
- ENDIF
- m_FIELD=m_FIELD+1
- ENDDO
- @ 18,0
- ?? REPLICATE(CHR(205),79)
- STORE 0 TO m_CHOICE
- STORE "" TO m_LIST
- SET BELL OFF
- @ 24,45 SAY "(ESC) To Process Field List"
- SET ESCAPE ON
- DO WHILE LASTKEY()<>27
- @ 24,1 SAY "Choose A Field Number: " GET m_CHOICE PICT "99"
- READ
- IF m_CHOICE >0 .AND. m_CHOICE<=FLDCOUNT();
- .AND. .NOT. FIELD(m_CHOICE) $ m_LIST;
- .AND. .NOT. FIELD(m_CHOICE)+"," $ m_LIST;
- .AND. .NOT. ","+FIELD(m_CHOICE) $ m_LIST
- IF LEN(m_LIST)+LEN(FIELD(m_CHOICE))+1<250
- IF LEN(m_LIST)=0
- STORE "COPY TO MERGE.DBF FIELDS "+m_LIST+FIELD(m_CHOICE) TO m_LIST
- ELSE
- STORE m_LIST+","+FIELD(m_CHOICE) TO m_LIST
- ENDIF
- @ 20,0 SAY m_LIST
- ELSE
- DO WHILE LASTKEY()<>99 .AND. LASTKEY()<>67
- ACTIVATE WINDOW m_ERROR
- @ 2,5 SAY "Field list to long - Press (C)ontinue"
- WAIT "" TO CONTINUE
- CLEAR
- ENDDO
- DEACTIVATE WINDOW m_ERROR
- ENDIF
- ENDIF
- m_CHOICE=0
- ENDDO
- STORE "SET FILTER TO " TO m_FILTER
- @ 19,0 CLEAR TO 24,79
- STORE FIELD(1) TO m_EX1
- STORE FIELD(2) TO m_EX2
- @ 20,0 SAY 'Example: '+TRIM(m_EX1)+'='+;
- IIF(TYPE(m_EX1)='C','"'+TRIM(&m_EX1)+'"',;
- IIF(TYPE(m_EX1)='N',LTRIM(STR(&m_EX1)),;
- IIF(TYPE(m_EX1)='D','CTOD("'+DTOC(&m_EX1)+'")',;
- IIF(TYPE(m_EX1)='L',".T."," "))))+' .AND. '+TRIM(m_EX2)+'='+;
- IIF(TYPE(m_EX2)='C','"'+TRIM(&m_EX2)+'"',;
- IIF(TYPE(m_EX2)='N',LTRIM(STR(&m_EX2)),;
- IIF(TYPE(m_EX2)='D','CTOD("'+DTOC(&m_EX2)+'")',;
- IIF(TYPE(m_EX2)='L',".T."," "))))
- @ 23,53 SAY "(ESC) To Quit"
- @ 24,16 SAY "...................................."
- @ 24,53 SAY "(ENTER) To Process Filter"
- @ 23,79
- SET ESCAPE OFF
- ACCEPT "Filter Command: " TO m_COMMAND
- STORE m_FILTER+m_COMMAND TO m_FILTER
- SET ESCAPE ON
- IF LASTKEY()<>27
- STORE "INDEX ON " TO m_INDEX
- STORE " TO TEMP.NDX" TO m_INDEX1
- @ 19,0 CLEAR TO 24,79
- @ 20,0 SAY 'Example: '+;
- IIF(TYPE(m_EX1)='N','STR('+TRIM(m_EX1)+')+',;
- IIF(TYPE(m_EX1)='C','TRIM('+TRIM(m_EX1)+')+',;
- IIF(TYPE(m_EX1)='D','DTOC('+TRIM(m_EX1)+')+'," ")))+;
- IIF(TYPE(m_EX2)='N','STR('+TRIM(m_EX2)+')',;
- IIF(TYPE(m_EX2)='C','TRIM('+TRIM(m_EX2)+')',;
- IIF(TYPE(m_EX2)='D','DTOC('+TRIM(m_EX2)+')'," ")))
- @ 23,53 SAY "(ESC) To Quit"
- @ 24,16 SAY "...................................."
- @ 24,53 SAY "(ENTER) To Process Index"
- @ 23,79
- SET ESCAPE OFF
- ACCEPT "Index Statement: " TO m_COMMAND
- @ 24,0 CLEAR TO 24,79
- IF LASTKEY()<>27
- IF m_COMMAND > " "
- STORE m_INDEX+m_COMMAND+m_INDEX1 TO m_INDEX
- ELSE
- STORE " " TO m_INDEX
- ENDIF
- SET ESCAPE ON
- STORE HOME() TO m_PATH
- @ 19,0 CLEAR TO 24,79
- @ 20,0 SAY "Current Path: "+m_PATH
- @ 23,57 SAY "(ESC) To Quit"
- @ 24,33 SAY "......................"
- @ 24,57 SAY "(ENTER) = Current Path"
- @ 23,79
- SET ESCAPE OFF
- ACCEPT "Put MERGE.DAT In What Directory? " TO m_PATH
- IF m_PATH=" "
- STORE HOME() TO m_PATH
- ELSE
- IF SUBSTR(m_PATH,LEN(m_PATH),1) <> "\"
- STORE m_PATH+"\" TO m_PATH
- ENDIF
- ENDIF
- SET ESCAPE ON
- @ 20,0 CLEAR TO 24,79
- IF LASTKEY()<>27
- SET BELL ON
- @ 20,0 CLEAR TO 20,79
- IF m_INDEX > " "
- @ 20,0 SAY "PLEASE WAIT - Indexing Database Records"
- &m_INDEX
- ENDIF
- @ 21,0 CLEAR TO 21,79
- @ 21,0 SAY "PLEASE WAIT - Processing Database Records"
- &m_FILTER
- &m_LIST
- USE MERGE.DBF
- STORE 1 TO m_FIELD
- DO WHILE m_FIELD <= FLDCOUNT()
- IF TYPE(FIELD(m_FIELD)) = 'C' .AND. FIELD(m_FIELD)<>'STATE'
- @ 22,0 CLEAR TO 22,79
- @ 22,0 SAY "PLEASE WAIT - Converting "+TRIM(FIELD(m_FIELD))+;
- " To Correct Case Using PROPER() U.D.F."
- STORE FIELD(m_FIELD) TO m_FIELD1
- REPLACE ALL &m_FIELD1 WITH PROPER(&m_FIELD1)
- ENDIF
- m_FIELD=m_FIELD+1
- ENDDO
- @ 23,0 CLEAR TO 23,79
- @ 23,0 SAY "PLEASE WAIT - Converting Merge File"
- COPY TO MERGE.DIF TYPE DIF
- STORE m_PATH+"MERGE.DAT" TO m_ERASE
- ERASE m_ERASE
- STORE "RUN C:\WP51\CONVERT MERGE.DIF "+m_PATH+"MERGE.DAT A" TO m_MRGSTR
- @ 20,0 CLEAR TO 24,79
- @ 23,0
- &m_MRGSTR
- IF FILE(m_PATH+"MERGE.DAT")=.T.
- DO Ok
- ELSE
- DO Bad
- ENDIF
- CLEAR ALL
- ERASE MERGE.DBF
- ERASE MERGE.DIF
- ERASE TEMP.NDX
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ON ERROR
- SET SAFETY ON
- SET TALK ON
- CLEAR ALL
- CLEAR
-
-
- PROCEDURE Ok
- CLEAR
- @ 6,0
- ?? REPLICATE(CHR(205),79)
- TEXT
-
-
- *******************************************
- ********** MERGE FILE CREATED ***********
- *******************************************
- MAKEMRG.PRG by Michael A. Huber
- P.O. Box 501511, Indianapolis,IN 46250-6511
-
-
-
- ENDTEXT
- ? REPLICATE(CHR(205),79)
- WAIT
-
-
- PROCEDURE Bad
- IF ERROR()=62
- RETURN
- ENDIF
- CLEAR
- @ 6,0
- ?? REPLICATE(CHR(205),79)
- TEXT
-
-
- *******************************************
- ********** MERGE FILE CREATION **********
- ********** FAILED **********
- *******************************************
- MAKEMRG.PRG by Michael A. Huber
- P.O. Box 501511, Indianapolis,IN 46250-6511
-
-
- ENDTEXT
- ? REPLICATE(CHR(205),79)
- ?
- @ ROW(),INT((80-LEN('ERROR NO. '+LTRIM(STR(ERROR(),4))+' '+MESSAGE()))/2) SAY;
- 'ERROR NO. '+LTRIM(STR(ERROR(),4))+' '+MESSAGE()
- ON ERROR
- CLEAR ALL
- ERASE MERGE.DBF
- ERASE MERGE.DIF
- ERASE TEMP.NDX
- SET SAFETY ON
- SET TALK ON
- CANCEL
-
-
- FUNCTION Proper
- PARAMETERS m_str
- STORE UPPER(SUBSTR(m_str,1,1)) TO m_str1
- STORE 2 TO m_pos
- DO WHILE m_pos<=LEN(TRIM(m_str))
- IF SUBSTR(m_str,m_pos-1,1) <> " ".AND.SUBSTR(m_str,m_pos-1,1) <> ".";
- .AND.SUBSTR(m_str,m_pos-1,1) <> "'".AND.SUBSTR(m_str,m_pos-1,1) <> ",";
- .AND.SUBSTR(m_str,m_pos-1,1) <> "-".AND.UPPER(SUBSTR(m_str,m_pos-2,2)) <> "MC"
- STORE m_str1+LOWER(SUBSTR(m_str,m_pos,1)) TO m_str1
- ELSE
- STORE m_str1+UPPER(SUBSTR(m_str,m_pos,1)) TO m_str1
- ENDIF
- STORE m_pos+1 TO m_pos
- ENDDO
- STORE m_str1 TO m_str
- RETURN m_str